usage-section.module.css 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. .root {
  2. /* Empty state */
  3. [data-component="empty-state"] {
  4. padding: var(--space-20) var(--space-6);
  5. text-align: center;
  6. border: 1px dashed var(--color-border);
  7. border-radius: var(--border-radius-sm);
  8. p {
  9. font-size: var(--font-size-sm);
  10. color: var(--color-text-muted);
  11. }
  12. }
  13. /* Table container */
  14. [data-slot="usage-table"] {
  15. overflow-x: auto;
  16. }
  17. /* Table element */
  18. [data-slot="usage-table-element"] {
  19. width: 100%;
  20. border-collapse: collapse;
  21. font-size: var(--font-size-sm);
  22. thead {
  23. border-bottom: 1px solid var(--color-border);
  24. }
  25. th {
  26. padding: var(--space-3) var(--space-4);
  27. text-align: left;
  28. font-weight: normal;
  29. color: var(--color-text-muted);
  30. text-transform: uppercase;
  31. }
  32. td {
  33. padding: var(--space-3) var(--space-4);
  34. border-bottom: 1px solid var(--color-border-muted);
  35. color: var(--color-text-muted);
  36. font-family: var(--font-mono);
  37. &[data-slot="usage-date"] {
  38. color: var(--color-text);
  39. }
  40. &[data-slot="usage-model"] {
  41. font-family: var(--font-sans);
  42. color: var(--color-text-secondary);
  43. max-width: 200px;
  44. word-break: break-word;
  45. }
  46. &[data-slot="usage-cost"] {
  47. color: var(--color-text);
  48. font-weight: 500;
  49. }
  50. [data-slot="tokens-with-breakdown"] {
  51. position: relative;
  52. display: flex;
  53. align-items: center;
  54. gap: var(--space-2);
  55. }
  56. [data-slot="breakdown-button"] {
  57. display: inline-flex;
  58. align-items: center;
  59. justify-content: center;
  60. padding: 0;
  61. background: transparent;
  62. border: none;
  63. color: var(--color-text-muted);
  64. cursor: pointer;
  65. transition: color 0.15s ease;
  66. &:hover {
  67. color: var(--color-text);
  68. }
  69. svg {
  70. width: 16px;
  71. height: 16px;
  72. }
  73. }
  74. [data-slot="breakdown-popup"] {
  75. position: absolute;
  76. left: 0;
  77. top: 100%;
  78. margin-top: var(--space-2);
  79. background: var(--color-bg);
  80. border: 1px solid var(--color-border);
  81. border-radius: var(--border-radius-sm);
  82. padding: var(--space-2);
  83. z-index: 10;
  84. min-width: 180px;
  85. box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  86. font-size: var(--font-size-xs);
  87. @media (prefers-color-scheme: dark) {
  88. box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
  89. }
  90. }
  91. }
  92. tbody tr:last-child td {
  93. border-bottom: none;
  94. }
  95. }
  96. /* Pagination */
  97. [data-slot="pagination"] {
  98. display: flex;
  99. justify-content: flex-end;
  100. gap: var(--space-2);
  101. padding: var(--space-4) 0;
  102. border-top: 1px solid var(--color-border-muted);
  103. margin-top: var(--space-2);
  104. button {
  105. padding: var(--space-2) var(--space-4);
  106. background: var(--color-bg-secondary);
  107. border: 1px solid var(--color-border);
  108. border-radius: var(--border-radius-sm);
  109. color: var(--color-text);
  110. font-size: var(--font-size-sm);
  111. cursor: pointer;
  112. transition: all 0.15s ease;
  113. svg {
  114. width: 16px;
  115. height: 16px;
  116. stroke-width: 2;
  117. }
  118. &:hover:not(:disabled) {
  119. background: var(--color-bg-tertiary);
  120. border-color: var(--color-border-hover);
  121. }
  122. &:disabled {
  123. opacity: 0.5;
  124. cursor: not-allowed;
  125. }
  126. }
  127. }
  128. /* Mobile responsive */
  129. @media (max-width: 40rem) {
  130. [data-slot="usage-table-element"] {
  131. th,
  132. td {
  133. padding: var(--space-2) var(--space-3);
  134. font-size: var(--font-size-xs);
  135. }
  136. /* Hide Model column on mobile */
  137. th:nth-child(2),
  138. td:nth-child(2) {
  139. display: none;
  140. }
  141. }
  142. }
  143. /* Breakdown popup content */
  144. [data-slot="breakdown-row"] {
  145. display: flex;
  146. justify-content: space-between;
  147. align-items: center;
  148. gap: var(--space-4);
  149. padding: var(--space-1) 0;
  150. }
  151. [data-slot="breakdown-label"] {
  152. color: var(--color-text-muted);
  153. font-size: var(--font-size-xs);
  154. }
  155. [data-slot="breakdown-value"] {
  156. color: var(--color-text);
  157. font-weight: 500;
  158. font-size: var(--font-size-xs);
  159. }
  160. }